<?php

App::uses('AppController', 'Controller');

/**
 * Medicos Controller
 *
 * @property Medico $Medico
 */
class MedicosController extends AppController {

    /**
     * index method
     *
     * @return void
     */
    public function index() {
        $this->redirect(array('action' => 'pesquisar'));
    }

    /**
     * view method
     *
     * @throws NotFoundException
     * @param string $id
     * @return void
     */
    public function visualizar($id = null) {
        try{
            $dados = $this->Medico->find('first', array(
                                            'joins' => array(
                                                array(
                                                    'table' => 'AUTORIZADO',
                                                    'alias' => 'AUTORIZADO',
                                                    'type' => 'INNER',
                                                    'conditions' => array(
                                                        'AUTORIZADO.CD_LOGIN = MEDICO.CD_LOGIN'
                                                    )
                                                ),
                                                array(
                                                    'table' => 'UF',
                                                    'alias' => 'UF',
                                                    'type' => 'INNER',
                                                    'conditions' => array(
                                                        'UF.CD_UF = MEDICO.UF_CRM'
                                                    )
                                                )
                                            ),
                                            'conditions' => array('MEDICO.CPF_MEDIC = ' => $id)
                                            ,
                                            'fields' => array('MEDICO.NM_MEDIC',
                                                            'MEDICO.CPF_MEDIC',
                                                            'MEDICO.DT_NASC',
                                                            'MEDICO.CD_CRM',
                                                            'MEDICO.UF_CRM',
                                                            'MEDICO.IM_FOTO',
                                                            'MEDICO.NU_CNSUS',
                                                            'MEDICO.ST_MRG',
                                                            'AUTORIZADO.CD_LOGIN',
                                                            'AUTORIZADO.STATUS',
                                                            'AUTORIZADO.DS_EMAIL',
                                                            'AUTORIZADO.DS_EMAIL_SEC',
                                                            'AUTORIZADO.SEXO',
                                                            'UF.NM_UF',
                                                            "(SELECT '('+A.DDD_TELEFONE+')'+NU_TELEFONE AS [data()] 
                                                                FROM TB_TELEFONE A
                                                                WHERE A.CD_LOGIN = MEDICO.CD_LOGIN
                                                                FOR XML PATH('')) as TELEFONES ")
                                            )
                                );
            $this->set('dados', $dados);

            $this->loadModel('RelacionamentoAutoPerfilInst');
            $arrInstLab = $this->RelacionamentoAutoPerfilInst->find('all', array(
                                                        'joins' => array(
                                                                            array(
                                                                                'table' => 'INSTITUICAO_LAB',
                                                                                'alias' => 'Instituicaolab',
                                                                                'type' => 'INNER',
                                                                                'conditions' => array(
                                                                                    'Instituicaolab.CD_INST_LAB = RelacionamentoAutoPerfilInst.CD_INST_LAB'
                                                                                )
                                                                            ),
                                                                            array(
                                                                                'table' => 'RL_SERVICO_INST_LAB',
                                                                                'alias' => 'RelacionamentoSIL',
                                                                                'type' => 'INNER',
                                                                                'conditions' => array(
                                                                                    'RelacionamentoSIL.CD_INST_LAB = Instituicaolab.CD_INST_LAB'
                                                                                )
                                                                            ),
                                                                            array(
                                                                                'table' => 'TB_SERVICO',
                                                                                'alias' => 'Servico',
                                                                                'type' => 'INNER',
                                                                                'conditions' => array(
                                                                                    'Servico.CO_SERVICO = RelacionamentoSIL.CO_SERVICO'
                                                                                )
                                                                            ),
                                                                            array(
                                                                                'table' => 'AUTORIZADO',
                                                                                'alias' => 'Autorizado',
                                                                                'type' => 'INNER',
                                                                                'conditions' => array(
                                                                                    'Autorizado.CD_LOGIN = RelacionamentoAutoPerfilInst.CD_LOGIN'
                                                                                )
                                                                            ),
                                                                            array(
                                                                                'table' => 'TB_PERFIL',
                                                                                'alias' => 'Perfil',
                                                                                'type' => 'INNER',
                                                                                'conditions' => array(
                                                                                    'Perfil.CO_PERFIL = RelacionamentoAutoPerfilInst.CO_PERFIL'
                                                                                )
                                                                            )
                                                                ),
                                            'conditions' => array('Autorizado.CD_LOGIN' => $id),
                                            'fields' => array("Instituicaolab.NM_INST","Servico.TP_SERVICO")
                                    )
                                    
                );
            $this->set('arrInstLab', $arrInstLab);
        }catch(Exception $e){
            $this->Session->setFlash(__('Ocorreu um erro durante a pesquisa.'));
            print $e;exit;
        }
    }

    /**
     * add method
     *
     * @return void
     */
    public function cadastrar() {

        $this->loadModel('Uf');
        $this->set('arrUF', $this->Uf->getCombo(array('CD_UF', 'NM_UF')));

        if ($this->request->is('post')) {

            if(!self::validaFormulario($this->request->data)){
                return false;
            }
                
            $dataSource = $this->Medico->getDataSource();
            try {

                $dataSource->begin();
//echo'<pre>';print_r($this->request->data['Medicos']);
                $this->loadModel('Autorizados');
                $cdLogin = strtr($this->request->data['Medicos']['CPF_MEDIC'], array('.' => '', '-' => ''));
                $this->request->data['USUARIO']['CD_LOGIN'] = $cdLogin;
                $this->request->data['USUARIO']['STATUS'] = 'A';
                $this->request->data['USUARIO']['SENHA'] = '123456';
$this->request->data['USUARIO']['TP_AUTORIZADO'] = '1';

                if ($this->Autorizados->save($this->request->data['USUARIO'], false)) {
                    $this->Medico->create();
                    $this->request->data['Medicos']['CD_LOGIN'] = $cdLogin;
                    $this->request->data['Medicos']['CPF_MEDIC'] = $cdLogin;
                    $this->request->data['Medicos']['NM_MEDIC'] = $this->request->data['USUARIO']['NM_AUT'];
                    $this->request->data['Medicos']['HABILITADO'] = 'S';
                    $this->request->data['Medicos']['END_ELETRONICO'] = $this->request->data['USUARIO']['DS_EMAIL'];
                    $this->request->data['Medicos']['END_ELETRONICO_SEC'] = $this->request->data['USUARIO']['DS_EMAIL_SEC'];
                    $this->request->data['Medicos']['TP_SEXO'] = $this->request->data['USUARIO']['SEXO'];
                    $this->request->data['Medicos']['DT_NASC'] = date('Y-m-d H:i:s', strtotime(str_replace('/', '-', $this->request->data['Medicos']['DT_NASC'])));

                    if ($this->Medico->save($this->request->data['Medicos'], false)) {
                        $this->Session->setFlash(__('Médico cadastrado com sucesso'));
                    } else {
                        throw new Exception("Erro ao cadastrar o médico");
                    }

                    foreach ($_SESSION['usuario']['RelacionamentoAutoPerfilInst'] as $unidades) {
                        $this->loadModel('RelacionamentoAutoPerfilInst');
                        $arrUnidade = array();
                        $arrUnidade['RelacionamentoAutoPerfilInst']['CD_LOGIN'] = $cdLogin;
                        $arrUnidade['RelacionamentoAutoPerfilInst']['CD_INST_LAB'] = $unidades['CD_INST_LAB'];
                        $arrUnidade['RelacionamentoAutoPerfilInst']["CO_PERFIL"] = 3;
                        $arrUnidade['RelacionamentoAutoPerfilInst']["ST_AUT_PERFIL_INST"] = 'A';
                        if (!$this->RelacionamentoAutoPerfilInst->save($arrUnidade)) {
                            throw new Exception();
                        }
                    }

                    //UPLOAD
                    if(!empty($this->request->data['Medicos']['fotoUsuario']['name'])){
                        $tmp_nome = $this->request->data['Medicos']['fotoUsuario']['tmp_name'];
                        self::uploadIMG($tmp_nome, $cdLogin);
                    }

                    if (!empty($this->request->data['Telefone'])) {
                        $this->loadModel('Telefone');
                        foreach ($this->request->data['Telefone']['TP_TELEFONE'] as $k => $t) {
                            $tel['CO_TELEFONE'] = $this->Telefone->nextVal('CO_TELEFONE');
                            $tel['CD_LOGIN'] = $cdLogin;
                            $tel['DDD_TELEFONE'] = $this->request->data['Telefone']['DDD_TELEFONE'][$k];
                            $tel['NU_TELEFONE'] = strtr($this->request->data['Telefone']['NU_TELEFONE'][$k], array('-' => ''));
                            $tel['ST_PRINCIPAL'] = (!empty($this->request->data['Telefone']['ST_PRINCIPAL'][$k])) ? $this->request->data['Telefone']['ST_PRINCIPAL'][$k] : 'N';
                            $tel['TP_TELEFONE'] = $this->request->data['Telefone']['TP_TELEFONE'][$k];
                            if (!$this->Telefone->save($tel, false)) {
                                Throw new Exception("Erro ao cadastrar o telefone");
                            }
                        }
                    }

                } else {
                    throw new Exception("Erro ao cadastrar usuário");
                }
                
                $dataSource->commit();
                $this->redirect(array('action' => 'visualizar/'.$cdLogin));
                
            } catch (Exception $e) {
                $dataSource->rollback();
                print $e;
                $this->Session->setFlash(__('Ocorreu erro no cadastro'));
            }
        }
    }

    /**
     * edit method
     *
     * @throws NotFoundException
     * @param string $id
     * @return void
     */
    public function editar($id = null) {

        try {
            $dataSource = $this->Medico->getDataSource();
            if ($this->request->is('post') || $this->request->is('put')) {

                if(!self::validaFormulario($this->request->data)){
                    $this->redirect(array('action' => 'editar/'.$this->request->data['Medicos']['CPF_MEDIC']));
                }
                $dataSource->begin();

                $this->loadModel('Autorizados');
                $cdLogin = $this->request->data['Medicos']['CPF_MEDIC'];
                $this->request->data['USUARIO']['CD_LOGIN'] = $cdLogin;
                //$this->request->data['USUARIO']['STATUS'] = 'A';
                //$this->request->data['USUARIO']['SENHA'] = '123456';
                $retorno = $this->Autorizados->save($this->request->data['USUARIO'], false);

                if ($retorno !== false) {
                    //$this->Medico->create();
                    $this->request->data['Medicos']['CD_LOGIN'] = $cdLogin;
                    $this->request->data['Medicos']['CPF_MEDIC'] = $cdLogin;
                    $this->request->data['Medicos']['NM_MEDIC'] = $this->request->data['USUARIO']['NM_AUT'];
                    $this->request->data['Medicos']['HABILITADO'] = 'S';
                    $this->request->data['Medicos']['END_ELETRONICO'] = $this->request->data['USUARIO']['DS_EMAIL'];
                    $this->request->data['Medicos']['END_ELETRONICO_SEC'] = $this->request->data['USUARIO']['DS_EMAIL'];
                    $this->request->data['Medicos']['TP_SEXO'] = $this->request->data['USUARIO']['SEXO'];
                    $this->request->data['Medicos']['DT_NASC'] = date('Y-m-d H:i:s', strtotime(str_replace('/', '-', $this->request->data['Medicos']['DT_NASC'])));

                    $this->Medico->primaryKey = 'CD_CRM';
                    if ($this->Medico->save($this->request->data['Medicos'], false)) {
                        $this->Session->setFlash(__('Médico alterado com sucesso'));
                    } else {
                        $this->Session->setFlash(__('Erro ao alterar médico'));
                    }

                    //UPLOAD
                    if(!empty($this->request->data['Medicos']['fotoUsuario']['name'])){
                        $tmp_nome = $this->request->data['Medicos']['fotoUsuario']['tmp_name'];
                        self::uploadIMG($tmp_nome, $cdLogin);
                    }
                    
                } else {
                    $this->Session->setFlash(__('Erro ao cadastrar médico'));
                }
                $dataSource->commit();                               
                
                $this->redirect(array('action' => 'pesquisar'));
            } else {
                $dados = $this->Medico->find('first', array(
                                            'joins' => array(
                                                array(
                                                    'table' => 'AUTORIZADO',
                                                    'alias' => 'AUTORIZADO',
                                                    'type' => 'INNER',
                                                    'conditions' => array(
                                                        'AUTORIZADO.CD_LOGIN = MEDICO.CD_LOGIN'
                                                    )
                                                ),
                                                array(
                                                    'table' => 'UF',
                                                    'alias' => 'UF',
                                                    'type' => 'INNER',
                                                    'conditions' => array(
                                                        'UF.CD_UF = MEDICO.UF_CRM'
                                                    )
                                                )
                                            ),
                                            'conditions' => array('MEDICO.CPF_MEDIC = ' => $id)
                                            ,
                                            'fields' => array('MEDICO.NM_MEDIC',
                                                            'MEDICO.CPF_MEDIC',
                                                            'MEDICO.DT_NASC',
                                                            'MEDICO.CD_CRM',
                                                            'MEDICO.UF_CRM',
                                                            'MEDICO.IM_FOTO',
                                                            'MEDICO.NU_CNSUS',
                                                            'MEDICO.ST_MRG',
                                                            'AUTORIZADO.CD_LOGIN',
                                                            'AUTORIZADO.STATUS',
                                                            'AUTORIZADO.DS_EMAIL',
                                                            'AUTORIZADO.DS_EMAIL_SEC',
                                                            'AUTORIZADO.SEXO',
                                                            'UF.NM_UF',
                                                            "(SELECT '('+A.DDD_TELEFONE+')'+NU_TELEFONE AS [data()] 
                                                                FROM TB_TELEFONE A
                                                                WHERE A.CD_LOGIN = MEDICO.CD_LOGIN
                                                                FOR XML PATH('')) as TELEFONES ")
                                            )
                                );
                $this->set('dados', $dados);
            }
        } catch (Exception $e) {
            $dataSource->rollback();
            print $e;exit;
            $this->Session->setFlash(__('Ocorreu erro no cadastro'));
            $this->redirect(array('action' => 'pesquisar'));
        }
    }

    public function pesquisar(){

        $this->loadModel('InstituicaoLab');
        $this->set('arrUnidades', $this->InstituicaoLab->getCombo(array('CD_INST_LAB', 'NM_INST')));
                
        $parametros['conditions'] = array();
         try{
            if($this->request->is('post')){
         
                $i = 0;                

                if(!self::validaPesquisa($this->request->data)){
                    return false;
                }
                if (!empty($this->request->data['Medico']['NM_MEDIC'])) {
                    $parametros['conditions'][$i++] = array('MEDICO.NM_MEDIC LIKE ' => '%' . $this->request->data['Medico']['NM_MEDIC'] . '%');
                }

                if (!empty($this->request->data['Medico']['CD_CRM'])) {
                    $parametros['conditions'][$i++] = array('MEDICO.CD_CRM = ' => $this->request->data['Medico']['CD_CRM']);
                }
                if (!empty($this->request->data['Medico']['UF_CRM'])) {
                    $parametros['conditions'][$i++] = array('UF.CD_UF = ' => $this->request->data['Medico']['UF_CRM']);
                }

                if (!empty($this->request->data['Medico']['CPF_MEDIC'])) {
                    $parametros['conditions'][$i++] = array('MEDICO.CPF_MEDIC = ' => strtr($this->request->data['Medico']['CPF_MEDIC'], array('.' => '', '-' => '')));
                }
                if (!empty($this->request->data['Usuario']['STATUS'])) {
                    $parametros['conditions'][$i++] = array('AUTORIZADO.STATUS = ' => $this->request->data['Usuario']['STATUS']);
                }

                $this->set('arrMedicos', self::pesquisaMedicos($parametros));

            }else{
                
                $this->set('arrMedicos', self::pesquisaMedicos($parametros));
            }

        }  catch (Exception $e){
                $this->Session->setFlash(__('Ocorreu um erro durante a pesquisa.'));
            }
    }

    public function pesquisaMedicos($parametros){

        return $this->Medico->find('all', array(
                    'joins' => array(
                        array(
                            'table' => 'AUTORIZADO',
                            'alias' => 'AUTORIZADO',
                            'type' => 'INNER',
                            'conditions' => array(
                                'AUTORIZADO.CD_LOGIN = MEDICO.CD_LOGIN'
                            )
                        ),
                        array(
                            'table' => 'UF',
                            'alias' => 'UF',
                            'type' => 'INNER',
                            'conditions' => array(
                                'UF.CD_UF = MEDICO.UF_CRM'
                            )
                        )
                    ),
                    'conditions' => $parametros['conditions']
                    ,
                    'fields' => array('MEDICO.NM_MEDIC',
                                    'MEDICO.CPF_MEDIC',
                                    'MEDICO.CD_CRM',
                                    'MEDICO.IM_FOTO',
                                    'MEDICO.NU_CNSUS',
                                    'AUTORIZADO.CD_LOGIN',
                                    'AUTORIZADO.STATUS',
                                    'AUTORIZADO.DS_EMAIL',
                                    'UF.NM_UF',
                                    "(SELECT '('+A.DDD_TELEFONE+')'+NU_TELEFONE AS [data()]
                                        FROM TB_TELEFONE A
                                        WHERE A.CD_LOGIN = MEDICO.CD_LOGIN
                                        FOR XML PATH('')) as TELEFONES ")
                    )
        );

                
    }
    
    public function validaPesquisa(array $dados){

        if(!empty($dados['Medico']['NM_MEDIC'])){
            return true;
            
        }else if(!empty($dados['Medico']['CD_CRM'])){
            return true;
                    
        }else if(!empty($dados['Medico']['UF_CRM'])){
            return true;
                    
        }else if(!empty($dados['Medico']['CPF_MEDIC'])){
            return true;
        
        }else if(!empty($dados['Medico']['CNS'])){
            return true;
            
        }else if(!empty($dados['Usuario']['STATUS'])){
            return true;
            
        }else{
            $this->Session->setFlash(__('Informe um parametro para a pesquisa.'));
            return false;
        }
        
        $this->request->data['Medico']['CPF_MEDIC'] = strtr($dados['Medicos']['CPF_MEDIC'], array('.' => '', '-' => ''));
        
         return true;
    }
    
    /**
     * delete method
     *
     * @throws NotFoundException
     * @param string $id
     * @return void
     */
    public function excluirMedico($id) {
        try{
            $this->loadModel('Autorizados');
            $dataSource = $this->Autorizados->getDataSource();
            $dataSource->begin();

            $atutorizado = array();
            $atutorizado['CD_LOGIN'] = $id;
            $atutorizado['STATUS'] = 'D';
            $this->Autorizados->save($atutorizado, false);
            $dataSource->commit();
            
            echo 'true';exit;
        }catch(Exception $e){
            $dataSource->rollback();
            echo 'false';exit;
        }
    }
    
    public function reativarMedico($id = null) {
        try{
            $this->loadModel('Autorizados');
            $dataSource = $this->Autorizados->getDataSource();
            $dataSource->begin();

            $atutorizado = array();
            $atutorizado['CD_LOGIN'] = $id;
            $atutorizado['STATUS'] = 'A';
            $this->Autorizados->save($atutorizado);
            $dataSource->commit();
            
            echo true;
            exit;
        }catch(Exception $e){
            $dataSource->rollback();
            echo false;
            exit;
        }
    }

    public function exists($id = null) {

        return (bool) $this->Medico->find('count', array(
                    'conditions' => array(
                        'MEDICO.CD_LOGIN = ' . $id
                    ),
                    'recursive' => -1,
                    'callbacks' => false
        ));
    }

    public function validaFormulario($dados){
        if (empty($this->request->data['USUARIO']['NM_AUT'])) {
            $this->Session->setFlash(__('O nome do médico é obrigatório.'));
            return false;
        }
        if (empty($this->request->data['USUARIO']['SEXO'])) {
            $this->Session->setFlash(__('Sexo é obrigatório.'));
            return false;
        }
        if (empty($this->request->data['Medicos']['CPF_MEDIC'])) {
            $this->Session->setFlash(__('CPF é obrigatório.'));
            return false;
        }
        if (empty($this->request->data['Medicos']['CD_CRM'])) {
            $this->Session->setFlash(__('CRM é obrigatório.'));
            return false;
        }
        if (empty($this->request->data['Medicos']['UF_CRM'])) {
            $this->Session->setFlash(__('UF é obrigatório.'));
            return false;
        }
        if (empty($this->request->data['USUARIO']['DS_EMAIL'])) {
            $this->Session->setFlash(__('Email principal é obrigatório.'));
            return false;
        }
                
        $this->request->data['Medicos']['CPF_MEDIC'] = strtr($this->request->data['Medicos']['CPF_MEDIC'], array('.' => '', '-' => ''));
        
        return true;
    }
    
    public function verificaCPF($nrCPF = null) {
        if (!empty($nrCPF)) {
            $retorno['TOTAL'] = $this->Medico->find('count', array(
                'conditions' => array(
                    "CPF_MEDIC = '$nrCPF'"
                ),
                'recursive' => -1,
                'callbacks' => false
            ));

            print json_encode($retorno);
            exit;
        }
    }

    function validaCadastroMedico() {
        $retorno = array();       
        $cpf = $_GET["id"];
        $crm = $_GET["crm"];
        $uf = $_GET["uf"];
        $cns = $_GET["cns"];
        
        $ret = $this->Medico->find('first', array(
                                                'joins' => array(
                                                    array(
                                                        'table' => 'AUTORIZADO',
                                                        'alias' => 'AUTORIZADO',
                                                        'type' => 'INNER',
                                                        'conditions' => array(
                                                            'AUTORIZADO.CD_LOGIN = MEDICO.CD_LOGIN'
                                                        )
                                                    )
                                                ),
                                                'conditions' => array("
                                                    (
                                                        (MEDICO.CPF_MEDIC = '".$cpf."' AND MEDICO.CD_CRM = '".$crm."' AND MEDICO.UF_CRM = '".$uf."')
                                                    OR 
                                                        (MEDICO.NU_CNSUS = '".$cns."')
                                                    )")
                                                ,
                                                'fields' => array('AUTORIZADO.STATUS',
                                                                  'AUTORIZADO.CD_LOGIN')
                                                )
                                    );

        if (empty($ret)) {
            $retorno['TOTAL'] = 0;
            $retorno['STATUS'] = NULL;
            $retorno['ID'] = NULL;
        } else {
            $retorno['TOTAL'] = 1;
            $retorno['STATUS'] = $ret['AUTORIZADO']['STATUS'];
            $retorno['ID'] = $ret['AUTORIZADO']['CD_LOGIN'];
        }
        print json_encode($retorno);
        exit;
    }

    public function uploadIMG($tmp_nome, $cdLogin){                    
        if (is_uploaded_file($tmp_nome)) {
            $this->Medico->query("UPDATE AUTORIZADO SET IM_FOTO = (SELECT * FROM OPENROWSET(BULK '" . $tmp_nome . "', SINGLE_BLOB) AS A) WHERE CD_LOGIN = '" . $cdLogin . "'");
            $this->Medico->query("UPDATE MEDICO SET IM_FOTO = (SELECT * FROM OPENROWSET(BULK '" . $tmp_nome . "', SINGLE_BLOB) AS A) WHERE CD_LOGIN = '" . $cdLogin . "'");
        } else {
            $this->Session->setFlash("Falha no upload");
        }
    }
    
    public function dadoscomplementares($id, $cdCrm, $cdUf){
        try{
            $this->layout = false;
            
            if($this->request->is('post')){
                $this->loadModel('Telefone');
                $dataSource = $this->Telefone->getDataSource();
                $dataSource->begin();

                if (is_array($this->request->data['Telefone'])) {
                    foreach ($this->request->data['Telefone']['TP_TELEFONE'] as $k => $t) {
                        $tel['CO_TELEFONE'] = $this->Telefone->nextVal('CO_TELEFONE');
                        $tel['CD_LOGIN'] = $cdLogin;
                        $tel['DDD_TELEFONE'] = $this->request->data['Telefone']['DDD_TELEFONE'][$k];
                        $tel['NU_TELEFONE'] = strtr($this->request->data['Telefone']['NU_TELEFONE'][$k], array('-' => ''));
                        $tel['ST_PRINCIPAL'] = (!empty($this->request->data['Telefone']['ST_PRINCIPAL'][$k])) ? $this->request->data['Telefone']['ST_PRINCIPAL'][$k] : 'N';
                        $tel['TP_TELEFONE'] = $this->request->data['Telefone']['TP_TELEFONE'][$k];
                        if (!$this->Telefone->save($tel, false)) {
                            Throw new Exception("Erro ao cadastrar o telefone");
                        }
                    }
                }

                if (!empty($this->request->data['Endereco'])) {
                    $this->loadModel('Endereco');
                    foreach ($this->request->data['Endereco']['TP_ENDERECO'] as $k => $t) {
                        $tel['CO_ENDERECO']     = $this->Endereco->nextVal('CO_ENDERECO');
                        $tel['CD_CRM']          = $cdCrm;
                        $tel['UF_CRM']          = $cdUf;
                        $tel['ST_PRINCIPAL']    = $this->request->data['Endereco']['ST_PRINCIPAL'][$k];
                        $tel['TP_ENDERECO']     = $this->request->data['Endereco']['TP_ENDERECO'][$k];
                        $tel['NU_CEP']          = strtr($this->request->data['Endereco']['NU_CEP'][$k],array('.'=>'','-'=>''));
                        $tel['CD_CID']          = $this->request->data['Endereco']['CD_CID'][$k];
                        $tel['DS_LOGRADOURO']   = $this->request->data['Endereco']['DS_LOGRADOURO'][$k];
                        $tel['DS_BAIRRO']       = $this->request->data['Endereco']['DS_BAIRRO'][$k];
                        if (!$this->Endereco->save($tel, false)) {
                            Throw new Exception("Erro ao cadastrar o endereco");
                        }
                    }
                }

                $dataSource->commit();
                $this->Session->setFlash("Dados cadastrados com sucesso");
                $this->redirect(array('action' => 'visualizar/'.$id));
            }else{
                $this->loadModel('Uf');
                $this->set('arrUF', $this->Uf->getCombo(array('CD_UF', 'NM_UF')));

                $this->loadModel('Cidade');
                $this->set('arrCidade', $this->Cidade->getCombo(array('CD_CID', 'NM_CID')));

                $this->loadModel('Pais');
                $this->set('arrPais', $this->Pais->getCombo(array('CD_PAIS', 'NM_PAIS')));

                $this->loadModel('Telefone');
                $arrTel = array();
                $options = array('conditions' => array('Telefone.CD_LOGIN' => $id));
                $resultTel = $this->Telefone->find('all', $options);
                if(!empty ($resultTel)){
                    foreach ($resultTel as $v) {
                        $arrTel[] = $v['Telefone'];
                    }
                }
                //$this->set('telefones', $arrTel);
                $this->request->data += array('TELEFONES' => $arrTel);

                $this->loadModel('Endereco');
                $arrEnd = array();
                $resultEnd = $this->Endereco->find('all', array(
                                                'joins' => array(
                                                    array(
                                                        'table' => 'CIDADE',
                                                        'alias' => 'Cidade',
                                                        'type' => 'INNER',
                                                        'conditions' => array(
                                                            'Endereco.CD_CID = Cidade.CD_CID'
                                                        )
                                                    ),
                                                    array(
                                                        'table' => 'UF',
                                                        'alias' => 'Uf',
                                                        'type' => 'INNER',
                                                        'conditions' => array(
                                                            'Cidade.CD_UF = Uf.CD_UF'
                                                        )
                                                    ),
                                                    array(
                                                        'table' => 'PAIS',
                                                        'alias' => 'Pais',
                                                        'type' => 'INNER',
                                                        'conditions' => array(
                                                            'Cidade.CD_PAIS = Pais.CD_PAIS'
                                                        )
                                                    )
                                                ),
                                                'conditions' => array('Endereco.CD_CRM' => $cdCrm, 'Endereco.UF_CRM' => $cdUf)
                                                ,
                                                'fields' => array("Endereco.CO_ENDERECO","Endereco.TP_ENDERECO", "Endereco.NU_CEP",
                                                                    "Endereco.ST_PRINCIPAL", "Cidade.CD_CID", "Cidade.NM_CID",
                                                                    "Uf.CD_UF", "Uf.NM_UF",
                                                                    "Pais.CD_PAIS", "Pais.NM_PAIS",
                                                                    "Endereco.DS_LOGRADOURO", "Endereco.DS_BAIRRO")
                                                ));
                
                if(!empty ($resultEnd)){
                    foreach ($resultEnd as $v) {
                        $arr["CO_ENDERECO"]    = $v["Endereco"]["CO_ENDERECO"];
                        $arr["ST_PRINCIPAL"]   = $v["Endereco"]["ST_PRINCIPAL"];
                        $arr["TP_ENDERECO"]    = $v["Endereco"]["TP_ENDERECO"];
                        $arr["NU_CEP"]         = $v["Endereco"]["NU_CEP"];
                        $arr["CD_CID"]         = $v["Cidade"]["CD_CID"];
                        $arr["NM_CID"]         = $v["Cidade"]["NM_CID"];
                        $arr["DS_LOGRADOURO"]  = $v["Endereco"]["DS_LOGRADOURO"];
                        $arr["DS_BAIRRO"]      = $v['Endereco']["DS_BAIRRO"];
                        $arr["CD_UF"]          = $v["Uf"]["CD_UF"];
                        $arr["NM_UF"]          = $v["Uf"]["NM_UF"];
                        $arr["CD_PAIS"]        = $v["Pais"]["CD_PAIS"];
                        $arr["NM_PAIS"]        = $v["Pais"]["NM_PAIS"];
                        $arrEnd[] = $arr;
                    }
                }
                //$this->set('enderecos', $arrEnd);
                $this->request->data['ENDERECOS'] = $arrEnd;

                $this->set('id', $id);
                $this->set('cdCrm', $cdCrm);
                $this->set('cdUf', $cdUf);
            }
        }catch(Exception $e){
            $dataSource->rollback();
            $this->Session->setFlash("Ocorreu um erro ao cadastrar as informações");
            $this->redirect(array('action' => 'visualizar/'.$id));
        }
    }
    
}